package br.com.registrofinancas.database;

import java.util.ArrayList;
import java.util.List;

import br.com.registrofinancas.model.UsuarioVO;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;

public class UsuarioDAO {
	private Context contexto;
	private SQLiteDatabase db;
	private SQLiteStatement insertStatement;
	private static final String TABELA = "USUARIOS";
	private static final String INSERT = "INSERT INTO " + TABELA + "(id, usuario, senha) VALUES (?,?,?)";
	
	public UsuarioDAO(Context contexto) {
		this.contexto = contexto;
		this.db = DataSource.geDBtInstance(this.contexto);
	}
	
	public long insert(UsuarioVO usuario) {
		this.insertStatement = this.db.compileStatement(INSERT);		
		this.insertStatement.bindLong(1, usuario.getId());
		this.insertStatement.bindString(2, usuario.getUsuario());
		this.insertStatement.bindString(3, usuario.getSenha());
		return insertStatement.executeInsert();
	}
	
	public long delete( UsuarioVO usuario ){
		String [] parametros = {usuario.getId().toString()};
		return db.delete(TABELA, "WHERE id = ?", parametros);
	}

	public long deleteAll( ) {
		return db.delete( TABELA, null, null ) ;
	}

	public List<UsuarioVO> getAll( ) {
		List<UsuarioVO> list = new ArrayList<UsuarioVO>( ) ;
		Cursor cursor = 
				this.db.query( TABELA, new String[ ] { "id", "usuario" }, 
							   null, null, null, null, "id" ) ;
		if (cursor.moveToFirst( )) {
			do {
				UsuarioVO usuario = new UsuarioVO( ) ;
				usuario.setId( cursor.getInt( 0 ) ) ;
				usuario.setUsuario( cursor.getString( 1 ) ) ;

				list.add( usuario ) ;
			}
			while (cursor.moveToNext( )) ;
		}
		if (null != cursor && !cursor.isClosed( )) {
			cursor.close( ) ;
		}
		return list ;
	}
	

	public UsuarioVO getUsuarioById( Integer id ) {
		UsuarioVO usuario = null ;
		String[] parametros = {String.valueOf(id)};
		Cursor cursor = 
				this.db.query( TABELA, new String[ ] { "id", "usuario" }, 
							   "id = ?", parametros, null, null, "id" ) ;
		if (cursor.moveToFirst( )) {
			usuario = new UsuarioVO( ) ;
			usuario.setId( cursor.getInt( 0 ) ) ;
			usuario.setUsuario( cursor.getString( 1 ) ) ;
		}
		if (null != cursor && !cursor.isClosed( )) {
			cursor.close( ) ;
		}
		return usuario;
	}		
}